﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;

namespace UserService.Entity
{
    public class User
    {
        public User()
        {
            Id = Guid.NewGuid().ToString();
        }

        public User(string userName)
            : this()
        {
            UserName = userName;
        }

        public string Id { get; set; }//用户唯一编号

        public string UserName { get; set; }//用户名
        public string RealName { get; set; }//用户真实姓名

        public string PasswordHash { get; set; }//用户密码
        public string ConfirmThePasswordHash { get; set; }//确认密码

        public string WorkUnit { get; set; }//工作单位

        public string IncumbentPost { get; set; }//现任职务

        public string PresentAddress { get; set; }//单位地址

        public string ZipCodeNumber { get; set; }//邮政编码

        public string SeatNumber { get; set; }//单位座机号码

        public string PhoneNumber { get; set; }//手机号码

        public string MailBox { get; set; }//电子邮箱

        public string QQNumber { get; set; }//qq号

        public string Role { get; set; }//权限

        public string SecurityStamp { get; set; }//用户状态 1、可用；0、冻结
    }

    public class jczClaims
    {
        public string iss { get; set; }//The issuer of the token，token 是给谁的
        public string sub { get; set; }//The subject of the token，token 主题
        public string Role { get; set; }//权限
        public string jti { get; set; }//JWT ID。针对当前 token 的唯一标识
        public DateTime exp { get; set; }//: Expiration Time。 token 过期时间，Unix 时间戳格式
        public DateTime iat { get; set; }// Issued At。 token 创建时间， Unix 时间戳格式
        //public string randomCode { get; set; } //随机验证码

    }

    public static class UserExtensions
    {
        public static jczClaims ToClaimsIdentity(this User user)
        {
            var now = DateTime.UtcNow;
            //jczClaims obj = new jczClaims();
            //return obj;
            return new jczClaims{
                iss=user.UserName,
                sub=user.RealName,
                Role = "",
                jti = user.Id,
                iat = now,
                exp = now.AddHours(2),
               // randomCode = "234abc"
            };
        }
    }
}
